home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / GPSA1.LZH / GPSA212A.EXE / IDEAS.TXT < prev    next >
Text File  |  1993-01-12  |  30KB  |  671 lines

  1.                                IDEAS
  2.  
  3.  
  4. COBOL Maintenance Technologies is a group of COBOL programmers dedicated to
  5. developing and maintaining high quality software. Our quest to find new ways of
  6. improving software maintainability has provided some useful observations which
  7. we'd like to share with you.
  8.  
  9. Why is source code so important?
  10. ================================================================================
  11.      Applications software is a repository of accumulated business knowledge.
  12.  
  13.                The source code is the business specification.
  14. ================================================================================
  15.  
  16.  
  17. There is a strong correlation between the quality and efficiency of software
  18. management, and our ability to manipulate an application's source code.
  19. Significant short and long term benefits are available through:
  20.  
  21. 1.   Improving the programmer-to-source code interface by using repository
  22.      based system analysis and documentation software.
  23.  
  24. 2.   Increasing the quality and maintainability of our applications software by
  25.      reducing redundancies, and isolating system and business functions at the
  26.      source code level.
  27.  
  28.  
  29. Quality is not a one-time activity
  30. ================================================================================
  31.          Nothing affects system maintainability more than the line-by-line
  32.          evolution of the source code.
  33.  
  34.          The constant and never ending refinement of system and business
  35.          functions is the only sure way to attain and maintain software quality.
  36. ================================================================================
  37.  
  38.  
  39.  
  40.               System-wide Analysis and Documentation Basics
  41.  
  42. The most important feature of system analysis and documentation software is that
  43. it provide system-wide analysis capability. This requires the ability to load
  44. application source code into a repository that can be accessed by a flexible
  45. interactive viewing facility and by extensive reporting capabilities.
  46.  
  47. As source code is loaded into the repository, it is separated into component
  48. categories--typically data-names, paragraphs, and members--and the
  49. interrelationships between these components are captured.
  50.  
  51. Once loaded into the repository, each system component provides insight into the
  52. quality and consistency of system functions. This information is especially
  53. useful for impact analysis, system understanding, quality assurance, and
  54. provides a solid base for re-engineering efforts.
  55.  
  56. This document presents examples of system information that is available from
  57. the repository, and shows how this information can be exploited to build quality
  58. into existing COBOL systems.
  59.                          Table of Contents
  60.  
  61.  
  62. Data Information
  63.  
  64.          File-to-Program Interface. . . . . . . . . . . . . . . . . . . . . .4
  65.  
  66.          Program-to-Program Interface . . . . . . . . . . . . . . . . . . . .4
  67.  
  68.          Data Items That Control Processing Routines. . . . . . . . . . . . .5
  69.  
  70.          Data Items That Store Application Data . . . . . . . . . . . . . . .5
  71.  
  72.          Data Items That Share Data . . . . . . . . . . . . . . . . . . . . .6
  73.  
  74.          Similar Data-names . . . . . . . . . . . . . . . . . . . . . . . . .6
  75.  
  76.  
  77.  
  78.  
  79. Paragraph Information
  80.  
  81.          Storing Functions in Paragraphs. . . . . . . . . . . . . . . . . . .7
  82.  
  83.          Procedure Copybook Paragraph Usage . . . . . . . . . . . . . . . . .7
  84.  
  85.          Data Items Referenced in a Paragraph . . . . . . . . . . . . . . . .8
  86.  
  87.          Similar Paragraph-names. . . . . . . . . . . . . . . . . . . . . . .8
  88.  
  89.  
  90.  
  91.  
  92.                                 Standardize the Data
  93.                                Modularize the Processes
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102. ================================================================================
  103. All reports mentioned in IDEAS are available with GPSA. In the bad old days,
  104. before we built GPSA, virtually all these reports were produced manually by our
  105. maintenance programmers using a search utility and a mainframe style program
  106. editor. Working on software maintenance without GPSA is okay if you are being
  107. paid by the hour and have lots of time, but not if results are important to you
  108. and your organization.
  109. ================================================================================
  110.  
  111.  
  112.                          Table of Contents
  113.  
  114.  
  115. Members Information
  116.  
  117.          Member Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . 9
  118.  
  119.          Program Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  120.  
  121.          Copybook Usage . . . . . . . . . . . . . . . . . . . . . . . . . . .10
  122.  
  123.          System Analysis by Data Type . . . . . . . . . . . . . . . . . . . .10
  124.  
  125.          Data Items Referenced Within Member. . . . . . . . . . . . . . . . .11
  126.  
  127.          Storing Functions in Members . . . . . . . . . . . . . . . . . . . .11
  128.  
  129.  
  130.  
  131.  
  132. Additional Topics
  133.  
  134.          Linking External to Internal System Elements . . . . . . . . . . . .12
  135.  
  136.          Locate Selected Verbs. . . . . . . . . . . . . . . . . . . . . . . .13
  137.  
  138.          Alphanumeric Literals in the Procedure Division  . . . . . . . . . .13
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.                  Flexibility + Maintainability = Quality
  146.                       Data Information ( 4 )
  147.  
  148.  
  149. File-to-Program Interface
  150.  
  151.      An essential element of any file-to-program interface is consistency. All
  152.      programs that access a file must use the same file description or record
  153.      definition. This is accomplished by having one record definition, placed
  154.      in a copybook, for each file in the system.
  155.  
  156.      When a record definition is updated, it is easy to locate all programs
  157.      that are affected by the change; simply find all references to the
  158.      copybook containing the updated record definition on the Copy
  159.      Cross-Reference report. Each program that contains a reference must be
  160.      compiled.
  161.  
  162.      How to find record definitions that are not in copybooks:
  163.  
  164.      1. The Hard-Coded Record Definitions report lists all record definitions
  165.      that are not located in copybooks.
  166.  
  167.      2. The Data Areas Referenced by File Access Verbs report lists all data
  168.      definitions referenced by file access verbs and their parameters (i.e. KEY
  169.      IS, INTO, and FROM). Use this report to locate all data definitions that
  170.      are not in copybooks.
  171.  
  172.  
  173. Program-to-Program Interface
  174.  
  175.      An essential element of any program-to-program interface is consistency.
  176.      This interface, or linkage, usually consists of one or more data areas.
  177.      All data definitions that are used in the program-to-program interface
  178.      (i.e. CALL USING DATA-AREA and PROCEDURE DIVISION USING DATA-AREA) must be
  179.      located in copybooks.
  180.  
  181.      Consider the situation where a change is required to the
  182.      program-to-program interface, but the linkage area is coded in several
  183.      programs: it would be more difficult to correctly change several linkage
  184.      areas than a single linkage area located in a copybook. Problems which
  185.      occur as a result of inconsistent linkage areas are extremely difficult,
  186.      time-consuming, and costly to correct.
  187.  
  188.      When copybook linkage areas are updated, it is very easy to locate all
  189.      programs that are affected by the change; simply find all references to
  190.      the updated copybook on the Copy Cross-Reference report. Each program that
  191.      contains a reference must be compiled.
  192.  
  193.      How to find linkage data definitions that are not in copybooks:
  194.  
  195.      1. The Hard-Coded Linkage Sections report lists all data areas that are
  196.      located in the LINKAGE SECTION of a CALLed program.
  197.  
  198.      2. The Call Cross-Reference report lists all CALL statements along with  
  199.      their parameters (e.g. USING DATA-01 DATA-02). Starting with the data
  200.      areas listed on this report, and viewing the All Data-names screen which
  201.      shows where each data area is located, it is easy to identify all data
  202.      definitions that are not located in copybooks.
  203.                       Data Information  ( 5 )
  204.  
  205.  
  206. Data Items That Control Processing Routines
  207.  
  208.      Many data items are used to control the execution of processing routines.
  209.      These data items may be dates, indicators, transaction codes, or
  210.      combinations of the various types.
  211.  
  212.      A large proportion of system bugs are the result of inconsistent
  213.      operations being perform on these data items. For example, inconsistent or
  214.      invalid data values are moved into them, or there are several different
  215.      methods of testing their values.
  216.  
  217.      On the bright side, these data items provide a unique and highly focused
  218.      look at the system elements responsible for executing a specific
  219.      process--even though the elements are located in routines and programs
  220.      that appear to be completely unrelated.
  221.  
  222.      The References to Data-Name report lists all procedure code that
  223.      references one or more selected data-names. This is an important quality
  224.      assurance report for maintenance projects and for the latter stages of
  225.      system development, when processing routines produce unexpected results
  226.      due to data items which contain incorrect values--and no one on the
  227.      project remembers all the places where the data items are updated.
  228.  
  229.      The Associated Data-Names report lists the data definition of each data
  230.      item that is associated with one or more selected data items. Associated
  231.      data items are data items that are moved into, receive data from, or are
  232.      compared with, another data item. Using this report, we can view the
  233.      initial values of the associated data items, and check that all
  234.      definitions are consistent (e.g. all associated data items are defined as
  235.      five digit integers).
  236.  
  237.  
  238. Data Items That Store Application Data
  239.  
  240.      Data items that store application data are typically used by application
  241.      specific processing routines and, with the exception of temporary data
  242.      areas, should be located in copybooks.
  243.  
  244.      Business analysts and system re-developers are keenly interested in the
  245.      information provided by application data. Business rules, proprietary
  246.      calculations, and application specific processing routines are all
  247.      attached to application data.
  248.  
  249.      There are two reports which can be used to analyze application data:
  250.  
  251.      References to Data-Name which reports on up to 30 individually selected
  252.      data items, and References to All Data-Names in Member which reports on
  253.      all data items in a copybook or program. Both reports list the procedure
  254.      code that references the selected data items. Report options make it
  255.      possible to list references to each individual data item, or to all data
  256.      items as a group.
  257.                       Data Information  ( 6 )
  258.  
  259.  
  260. Data Items That Share Data
  261.  
  262.      Data items that share data provide us with a way to link or track data
  263.      across programs, files, and applications. For example, a payment amount is
  264.      divided among several categories of revenue accumulators, and added to
  265.      year-to-date totals. The payment amount, revenue accumulators, and
  266.      year-to-date totals provide us with a list of data items that share the
  267.      payment amount.
  268.  
  269.      Data items that share data can be especially difficult to balance when the
  270.      data items are updated by several programs, each with their own unique
  271.      calculations.
  272.  
  273.      The References to Data-Names report is used to list the data definitions
  274.      and procedure code references for the list of data items that share the
  275.      payment amount.
  276.  
  277.      Analysis of data items that share data frequently leads to the discovery
  278.      of inconsistent or redundant processing routines and calculations.
  279.  
  280.  
  281. Similar Data-names
  282.  
  283.      Analyzing similar data-names can help us in two ways:
  284.  
  285.      1. Duplicate data-names often occur when a programmer copies a group of
  286.      data definitions from one program into another, resulting in duplicate
  287.      data definitions. This is a problem when a data area changes and the same
  288.      change must be applied to several programs. The recommended solution is to
  289.      move one of the data areas to a copybook, and replace each redundant data
  290.      area with the new copybook.
  291.  
  292.      2. In most situations similar data-names (e.g. DATE, DTE, YYMMDD) should
  293.      be defined in a standard format (e.g. an eight digit integer). This is
  294.      especially important with the year 2000 approaching.
  295.  
  296.      Similar data-names can be located on the All Data-Names screen, or the All
  297.      Data-Names report which has the additional facility of matching data-names
  298.      against a specified pattern or string, (e.g. all data-names that contain
  299.      the string YYMM). Use the =DUPS filter option to produce a list of all
  300.      duplicate data-names. 
  301.                    Paragraph Information  ( 7 )
  302.  
  303.  
  304. Storing Functions in Paragraphs
  305.  
  306.      All programs contain control statements that dictate the program's
  307.      structure, and paragraphs that contain business and technical processes.
  308.      Well structured programs clearly separate the program's structural
  309.      elements from the actual processing routines.
  310.  
  311.      There are important long term benefits associated with storing business
  312.      and technical functions in one or more contiguous paragraphs:
  313.  
  314.      1. Isolating functions in paragraphs and separating the functions from the
  315.      program's control statements makes it easier to understand program
  316.      structure, and to identify specific business and technical functions.
  317.  
  318.      2. Functions located in paragraphs are easily incorporated into other
  319.      programs by simply moving the paragraphs to a copybook, or building a
  320.      single function program around them.
  321.  
  322.  
  323. Procedure Copybook Paragraph Usage
  324.  
  325.      Procedure copybooks provide a simple way to incorporate a function into
  326.      several programs. However, when a procedure copybook is large and contains
  327.      several functions, programs which utilize the copybook do not always use
  328.      all the functions in the copybook. This results in programs that are
  329.      larger and more complex than necessary.
  330.  
  331.      Large copybooks are good candidates for conversion into single function
  332.      programs. This copybook-to-program conversion results in smaller, easier
  333.      to maintain programs.
  334.  
  335.      Analyzing the paragraphs used by each program is greatly simplified by
  336.      utilizing the References to Paragraph-Name report, which lists all
  337.      references to each paragraph in the procedure copybook. Report options
  338.      provide for listing the entire control verb (e.g. PERFORM with VARYING and
  339.      UNTIL parameters) for each reference, or for producing a compressed report
  340.      that lists only the program and line number of each reference.
  341.  
  342.      Once you have identified where each paragraph is referenced, you can split
  343.      the copybook into smaller copybooks better suited to current functional
  344.      requirements, or you can move functions into single function programs.
  345.                    Paragraph Information  ( 8 )
  346.  
  347.  
  348. Data Items Referenced in a Paragraph
  349.  
  350.      When you move one or more paragraphs to a copybook or single function
  351.      program (SFP), you must know what data items are referenced by the
  352.      paragraphs. This is especially important when moving paragraphs to an SFP
  353.      because you must also decide which data items will be included in the
  354.      LINKAGE SECTION of the SFP;ideally, they should be located in one or more
  355.      copybooks.
  356.  
  357.      The task of determining which data items are referenced by selected
  358.      paragraphs is greatly simplified by the Data Referenced Within Paragraph
  359.      report, which lists the data definitions referenced within one or more
  360.      selected paragraphs.
  361.  
  362.  
  363. Similar Paragraph-names
  364.  
  365.      Similar paragraph-names often occur when a programmer copies paragraphs
  366.      from one program into another, resulting in similar or duplicate
  367.      paragraph-names and procedure code. This becomes a problem when one
  368.      paragraph is changed and the same change must also be applied to an
  369.      unknown number of similar paragraphs located in other programs. The
  370.      recommended solution is to move one of the paragraphs to a copybook, and
  371.      replace each of the redundant paragraphs with the new copybook. This
  372.      procedure produces processing routines which are more consistent and
  373.      maintainable.
  374.  
  375.      Similar paragraphs can be located on the All Paragraph-Names screen, or
  376.      the All Paragraph-Names report which can also match paragraph-names
  377.      against a specified pattern or string (e.g. paragraph-names that contain
  378.      the string SET-DIRECTORY). Use the =DUPS filter option to produce a list
  379.      of all duplicate paragraph-names. 
  380.  
  381.      Similar paragraphs are also identified on the References To Data-name and
  382.      References to All Data-Names in Member reports because similar paragraphs
  383.      usually contain references to the same data-items. This results in the
  384.      paragraphs with similar names and data references being listed on the same
  385.      report.
  386.                      Member Information  ( 9 )
  387.  
  388.  
  389. Member Descriptions
  390.  
  391.      Member descriptions are a simple but powerful facility for documenting
  392.      source members (programs and copybooks) in a system. A single comment line
  393.      describing the purpose of the program or copybook, is placed in each
  394.      source member. As more single purpose programs are created, this facility
  395.      becomes increasingly important for locating the program that accomplishes
  396.      a specific business or technical task.
  397.  
  398.      Member descriptions can be thought of as an inventory of business and 
  399.      technical functions, record definitions, and linkage areas.
  400.  
  401.      The All Members report prints a list of all source members, their contents
  402.      (i.e. program, data copybook, or procedure copybook), and the source
  403.      member description. The All Members screen provides the facility to view
  404.      this list interactively.
  405.  
  406.      Possible Member Description categories include:
  407.  
  408.           calc     - Calculation routines
  409.           file     - File definitions
  410.           conv     - Data conversion routines
  411.           tech     - Technical routines
  412.  
  413.      Example of All Members Report:
  414.  
  415.      Member     Description
  416.      CMAT01     Proc Copy       CALC: Calculate maturity date
  417.      RMASTER    Data Copy       FILE: Client Master file (length=1466)
  418.      JULGREG    Proc Copy       CONV: Convert julian to gregorian date
  419.      PCIOMAST   Program         TECH: Client master file access routines (PC)
  420.  
  421.  
  422. Program Usage
  423.  
  424.      One of the fundamental goals of software management is to isolate business
  425.      and technical functions into single function programs (SFP), which makes
  426.      it increasingly important to know where each program (or function) is
  427.      used.
  428.  
  429.      The Call Cross-Reference report lists where each program is referenced
  430.      within the system. One important feature of this report is that by listing
  431.      all USING parameters, you also know which data areas are required to CALL
  432.      the program. For example:
  433.  
  434.                  CALL 'PROGRAM' USING                LINK-AREA-1
  435.                                                      LINK-AREA-2
  436.                                                      LINK-AREA-3
  437.                     Member Information  ( 10 )
  438.  
  439.  
  440. Copybook Usage
  441.  
  442.      Data and procedure copybooks are an integral part of quality software.
  443.      They eliminate redundant data areas, standardize file definitions, and
  444.      simplify the utilization of existing business and technical routines.
  445.  
  446.      Potential problems associated with tracking large numbers of copybooks are
  447.      avoided by using two reports:
  448.  
  449.      1. The Copy Cross-Reference report lists where each copybook is
  450.      referenced. When a copybook is changed, simply refer to this report for
  451.      the list of programs that must be compiled to pick up the updated
  452.      copybook. This same information is also available on the References to
  453.      Member screen.
  454.  
  455.      2. The All Members report lists all programs and copybooks in a system,
  456.      along with a description of what the program or copybook is used for. When
  457.      you are trying to locate a single function program, procedure copybook, or
  458.      file definition, this report can be searched or sorted to find the
  459.      appropriate source member. This information is also available on the All
  460.      Members screen.
  461.  
  462.  
  463. System Analysis by Data Type
  464.  
  465.      Data copybooks provide valuable information about the role a specific
  466.      group of data items, such as a client master file definition, plays in a
  467.      system. We can obtain a manageable view of the system, as it relates to a
  468.      selected group of data items, by ignoring everything in the system except
  469.      the source code that have a direct impact on the selected group.
  470.  
  471.      Analysis by data copybook is provided by the References to Data-Names in
  472.      Member report, which is available in two formats:
  473.  
  474.      1. The single option lists the procedure references to each data-item in
  475.      the copybook. This shows how each individual data item is used, and also
  476.      shows if it is not referenced.
  477.  
  478.      2. The group option lists the references to all data items together. This
  479.      provides a more compact report with a single view of how the entire
  480.      copybook is used.
  481.                     Member Information  ( 11 )
  482.  
  483.  
  484. Data Items Referenced Within Member
  485.  
  486.      When you want to utilize an existing procedure copybook in a program, you
  487.      want to know the data areas the procedure copybook references.
  488.  
  489.      This is provided by the Data Referenced Within Member report, which lists
  490.      all data definitions referenced within a procedure copybook.
  491.  
  492.      The Data Referenced Within Member report is also valuable as a quality
  493.      assurance tool for analyzing procedure copybooks. Procedure copybooks
  494.      usually reference data items that are defined within each program that
  495.      utilize the copybook. This report can be used to check that common data
  496.      items have identical data definitions in each program. If practical,
  497.      duplicate data items should be replaced by a data copybook based on the
  498.      data items.
  499.  
  500.  
  501. Storing Functions in Members
  502.  
  503.      Moving business and technical functions from programs to copybooks and
  504.      single function programs (SFP), is an important maintenance function which
  505.      has a powerful impact on the long term viability of an application system.
  506.  
  507.      Companies who have not taken advantage of this procedure, are now
  508.      discovering how inefficient and error prone it is to update business
  509.      processes duplicated in several source members. Finding and understanding
  510.      each slightly different version of a process is extremely time-consuming.
  511.      Compare this with the small effort required to update a business function
  512.      located in an SFP. Single function programs and copybooks increase
  513.      reliability and save money!
  514.  
  515.      Another problem with having duplicate functions is that each version
  516.      typically has slight variations from the others. How do you determine
  517.      which version is the correct one? The original coders are long gone, and
  518.      as modifications have been applied to these original routines, they have
  519.      become increasingly unstable and likely to produce erroneous results.
  520.  
  521.      When moving functions to procedure copybooks and single function program
  522.      (SFP), consider that changing:
  523.  
  524.      ■ A procedure copybook is faster when using a function in less than four
  525.      programs.
  526.  
  527.      ■ A SFP requires more time and analysis for the initial setup, but is the
  528.      preferred solution when using a function in three or more programs.
  529.                      Additional Topics  ( 12 )
  530.  
  531.  
  532. Linking External to Internal System Elements
  533.  
  534.      Applications software is a mysterious black box with screens, reports, and
  535.      data files providing its only connection to the outside (real?) world.
  536.      Business oriented analysis begins with an external system element because
  537.      that is the system to the business analyst and system user. Data goes in
  538.      through this screen today...something happens...and the results are listed
  539.      on a report tomorrow morning.
  540.  
  541.      Screens:
  542.  
  543.      With GPSA, we can display BMS maps as they are displayed in a CICS region.
  544.      An internal-external link is provided by connecting the map fields on the
  545.      screen to the associated application data items. Beginning with an
  546.      external screen field we can proceed to track the associated internal data
  547.      item throughout a system using the Data References screen or References to
  548.      Data-Name report.
  549.  
  550.      In practice, this provides a method of identifying application data items
  551.      by their description and position on a screen which is familiar to system
  552.      users and business analysts, instead of their internal names.
  553.  
  554.      The BMS Map Reference report prints the BMS map definition, as displayed
  555.      by CICS, along with each screen field, and the internal data items
  556.      attached to the screen fields.
  557.  
  558.      Screens should also display a screen identifier to provide a link to the
  559.      internal elements associated with the screen (e.g. the program managing
  560.      the screen).
  561.  
  562.      Files:
  563.  
  564.      When we begin with a file, we can use the References to All Data-Names in
  565.      Member report to track the data throughout the application. The file
  566.      descriptions listed on the All Members report also connect the external
  567.      file description with the source member containing the internal file
  568.      definition.
  569.  
  570.      Reports:
  571.  
  572.      Reports should have a report identifier (e.g. R1012) to provide a link to
  573.      internal elements that are connected to the report. For example, the
  574.      report heading and detail lines could be called R1012-HEADING and
  575.      R1012-DETAIL, and would be easily located on the All Data-Names screen and
  576.      report.
  577.  
  578.      The member descriptions listed on the All Members screen and report also
  579.      provides a link between reporting programs and their reports. For example:
  580.  
  581.      All Members Report:
  582.  
  583.      Member        Description
  584.      RPT1002       Program         Weekly Client Delinquency Report (R1002)
  585.      RPT1012       Program         Monthly Client Delinquency Report (R1012)
  586.                      Additional Topics  ( 13 )
  587.  
  588.  
  589. Locate Selected Verbs
  590.  
  591.      This somewhat unusual way of analyzing parts of a system is useful when
  592.      migrating to another hardware platform or changing compilers.
  593.  
  594.      Migrating an application from one hardware platform to another usually
  595.      requires changes to the screen and file access methods. The Print Selected
  596.      Verbs report has two report options that specifically support platform
  597.      migration. They are: =IO, which lists all file access verbs, and =CICS,
  598.      which lists all CICS commands.
  599.  
  600.      Applications that are designed to run on multiple platforms should have
  601.      all screen and file access commands located in single function programs.
  602.  
  603.      Changing or upgrading COBOL compilers can cause problems with compiler
  604.      specific COBOL extensions and obsolete COBOL constructs. The ability to
  605.      locate these COBOL elements provides valuable input when assessing the
  606.      impact of changing compilers.
  607.  
  608.      The Print Selected Verbs report lists source code containing selected
  609.      COBOL and CICS commands. This report is also useful for locating errant
  610.      DISPLAY, EXHIBIT, and ACCEPT commands in production systems.
  611.  
  612.      An interesting feature of the Print Selected Verbs reports is that it can
  613.      be used to locate data tables. By selecting "subscript", the report lists
  614.      all subscripted data references. Two important reasons for looking at data
  615.      tables are:
  616.  
  617.      1. The problems inherent in maintaining duplicate data tables in multiple
  618.      locations. Duplicate data tables should be replaced with a single data
  619.      table located in a copybook or SFP.
  620.  
  621.      2. Invalid data problems due to a subscript value being less than or
  622.      greater than the number of table entries. Most of these errors are not
  623.      detectable when the error occurs. Ideally, subscripts should be tested to
  624.      enure that their value is within the correct range for the table being
  625.      accessed. The Print Selected Verbs report, used in combination with the
  626.      References to Data-Name report, can quickly identify all tables and
  627.      references to their subscripts to determine if each subscript has adequate
  628.      range checking.
  629.  
  630.  
  631. Alphanumeric Literals in the Procedure Division
  632.  
  633.      Coding alphanumeric literals in the PROCEDURE DIVISION is an unnecessary
  634.      programming practice that lends itself to inconsistent, poor quality code.
  635.      Alphanumeric literals should be replaced with data items whenever
  636.      practical.
  637.  
  638.      Some alphanumeric literals are more dangerous than others. For example,
  639.      they should never be moved into data items that are used by more than one
  640.      program.
  641.  
  642.      The Hard-Coded Literals report lists all the alphanumeric literals in a
  643.      system for easy review.
  644.  
  645.  
  646.  
  647. Please send your observations, comments and suggestions to:
  648.  
  649.  
  650.  
  651.                    Director of Support Services
  652.                   COBOL Maintenance Technologies
  653.                           P.O. Box 122069
  654.                        Chula Vista, CA 91912
  655.  
  656.  
  657.  
  658.  
  659.  
  660.      With GPSA, software maintenance is more than "just changing programs",
  661.      it's "managing your business and technical functions".
  662.  
  663.      This release of the General Purpose System Analyzer (GPSA) produces a
  664.      total of 26 analysis and documentation reports. If we missed one that you
  665.      need, please let us know.
  666.  
  667.      We will also work with you to produce solutions for specific software
  668.      maintenance and re-engineering opportunities. 
  669.  
  670.  
  671.